package day_2022_4_to_7.nowcoder;

import java.util.Stack;

/**
 * 栈的压入、弹出序列
 * @author haomin
 * @date 2022/04/20 21:52
 **/
public class IsPopOrder_18f {
    public boolean IsPopOrder(int [] pushA,int [] popA) {
        // 当第一序列或第二序列为空时，直接返回false
        if(pushA == null || popA == null || pushA.length ==0 || popA.length == 0){
            return false;
        }

        Stack<Integer> stack = new Stack<>();
        int i = 0;
        int j = 0;
        for (;i < pushA.length ; i++) {
            // 将第一序列元素入栈
            stack.push(pushA[i]);
            // 当第二个序列元素等于入栈元素时，弹出栈顶元素
            while (!stack.isEmpty() && stack.peek() == popA[j]){
                stack.pop();
                j++;
            }
        }
        // 如果符合要求，最后栈结构一定是空的
        return stack.isEmpty();
    }
}